package com.skynet.distributed.lock.redis;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@SuppressWarnings("ALL")
public @interface RedisLock {

    /**
     * 锁的资源，redis的key
     */
    String value() default "";

    /**
     * 持锁时间,单位毫秒
     */
    long keepMillis() default 30000;

    /**
     * 当获取失败时候动作
     */
    LockFailAction action() default LockFailAction.CONTINUE;

    public enum LockFailAction {
        /**
         * 放弃
         */
        GIVEUP,

        /**
         * 继续
         */
        CONTINUE,;
    }

    /**
     * 重试的间隔时间
     */
    long sleepMillis() default 200;

    /**
     * 重试次数
     */
    int retryTimes() default 5;


}
